package edu.upc.clase.demo.dao.impl;

import edu.upc.clase.demo.dao.CanchaHorarioDao;
import edu.upc.clase.demo.entity.CanchaHorario;
import java.util.List;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.stereotype.Repository;

/**
 *
 * Six-Group-Upc
 */
@Repository
public class CanchaHorarioDaoImpl extends SimpleJdbcDaoSupport implements CanchaHorarioDao {
    
    private static Logger log = LoggerFactory.getLogger(CanchaHorarioDaoImpl.class);
    
    @Autowired
    public CanchaHorarioDaoImpl(DataSource dataSource) {
            log.info("Asignando el dataSource");
            setDataSource(dataSource);
    }
    
    @Override
    public Integer insertar(CanchaHorario canchaHorario) {
        getJdbcTemplate().update(
                "insert into canchasHorario (TarifaDia,TarifaNoche,Turno,CodigoDia,CodigoHora,Activo,CodigoCancha) values (?, ?, ?, ?, ?, ?, ?)",
                canchaHorario.getTarifaDia(),canchaHorario.getTarifaNoche(),canchaHorario.getTurno(),canchaHorario.getCodigoDia(),canchaHorario.getCodigoHora(),canchaHorario.getActivo(),canchaHorario.getCodigoCancha());
        return getSimpleJdbcTemplate().queryForInt("call identity()");
    }
//    
//    @Override
//    public void actualizar(Cancha cancha) {        
//        getJdbcTemplate().update(
//                "update canchas set DescripcionCancha = ?, CaracteristicasCancha = ?, CodigoLocal = ?, CodigoPromocion = ? where CodigoCancha = ?",
//                 cancha.getDescripcionCancha(),cancha.getCaracteristicasCancha(),cancha.getCodigoLocal(),cancha.getCodigoPromocion(),cancha.getCodigoCancha());        
//    }
//    
//    @Override
//    public void eliminar(Cancha cancha) {
//        getJdbcTemplate().update(
//                "delete from canchas where CodigoCancha = ?",cancha.getCodigoCancha());        
//    }
//
//    @Override
//    public CanchaHorario buscar(Integer id) {
//        try {
//                return getSimpleJdbcTemplate().queryForObject(
//                                "select CodigoCanchaHorario,TarifaDia,TarifaNoche,Turno,CodigoDia,CodigoHora,Activo,CodigoCancha from canchasHorario where CodigoCancha=?  ",
//                                new BeanPropertyRowMapper<CanchaHorario>(CanchaHorario.class), id);
//        } catch (EmptyResultDataAccessException e) {
//                return null;
//        }        
//    }
    
     @Override
    public List<CanchaHorario> buscar(Integer id) {
        try {
                return getSimpleJdbcTemplate().query(
                                "select CodigoCanchaHorario,TarifaDia,TarifaNoche,Turno,CodigoDia,CodigoHora,Activo,CodigoCancha from canchasHorario where CodigoCancha=?  ",
                                new BeanPropertyRowMapper<CanchaHorario>(CanchaHorario.class), id);
        } catch (EmptyResultDataAccessException e) {
                return null;
        }        
    }

    @Override
    public List<CanchaHorario> buscarTodos() {
        return getSimpleJdbcTemplate().query(
                        //"select CodigoCancha,DescripcionCancha,CaracteristicasCancha,CodigoLocal,CodigoPromocion from canchas",
                        "select CodigoCanchaHorario,TarifaDia,TarifaNoche,Turno,CodigoDia,CodigoHora,Activo,CodigoCancha from canchasHorario ",
                        new BeanPropertyRowMapper<CanchaHorario>(CanchaHorario.class));
    }

//    @Override
//    public Cancha buscar(String DescripcionCancha) {
//        try {
//                return getSimpleJdbcTemplate().queryForObject(
//                                "select CodigoCancha,DescripcionCancha,CaracteristicasCancha,CodigoLocal,CodigoPromocion from canchas where DescripcionCancha=?",
//                                new BeanPropertyRowMapper<Cancha>(Cancha.class), DescripcionCancha);
//        } catch (EmptyResultDataAccessException e) {
//                return null;
//        }           
//    }
}